﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Web.Http;

namespace SelfHosting.Controllers
{
    /// <summary>
    /// Classe de base pour les contrôleurs Web Api
    /// </summary>
    public abstract class AbstractApiController : ApiController
    {
        #region Constructeur

        #endregion

        #region Propriétés

        #endregion

        #region Méthodes

        /// <summary>
        /// Création d'une réponse Http lors de la création d'une nouvelle entité
        /// </summary>
        /// <typeparam name="T">type d'entité</typeparam>
        /// <param name="entity">entité nouvellement créée</param>
        /// <returns>la réponse Http</returns>
        protected HttpResponseMessage CreatePostResponse<T>(T entity) where T : class
        {
            var response = Request.CreateResponse<T>(HttpStatusCode.Created, entity);
            //response.Headers.Location = new Uri(Url.Link("ActionApi", new { id = entity.Id }));
            return response;
        }

        #endregion
    }

    /// <summary>
    /// Classe de base pour les contrôleurs Web Api
    /// </summary>
    public abstract class AbstractApiController<S> : AbstractApiController
    {
        #region Constructeur

        #endregion

        #region Propriétés

        #endregion
    }
}